package pe.edu.sistemas.postgrado.samupg.view.controller;

import java.util.List;
import javax.annotation.PostConstruct;
import javax.annotation.Resource;
import javax.faces.bean.ManagedBean;
import javax.faces.event.ComponentSystemEvent;
import org.primefaces.model.DualListModel;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;
import pe.edu.sistemas.postgrado.samupg.business.service.marketing.PeriodoService;
import pe.edu.sistemas.postgrado.samupg.business.service.planificacion.MaestriaDiplomadoService;
import pe.edu.sistemas.postgrado.samupg.domain.model.MaestriaDiplomado;
import pe.edu.sistemas.postgrado.samupg.domain.model.Periodo;

/**
 *
 * @author Marlon
 */
@ManagedBean
@Scope("view")
@Controller
public class AsignarCursosPeriodo implements java.io.Serializable{

    private int periodId;
    private Periodo periodo;
    private boolean disabledPeriodo;

    private DualListModel<MaestriaDiplomado> maestriasSeleccionadas;
    private DualListModel<MaestriaDiplomado> diplomadosSeleccionados;
    
    @Resource
    private PeriodoService periodoService;
    
    @Resource
    private MaestriaDiplomadoService maestriaDiplomadoService;

    /**
     * Creates a new instance of AsignarCursosPeriodo
     */
    public AsignarCursosPeriodo() {
        disabledPeriodo = true;
    }

    public void RegistrarCambiosListener() {
        
    }
    
    public void preRenderPostulacionListener(ComponentSystemEvent cse) {
        periodo = periodoService.getPeriodosxId(periodId);
        
        List<MaestriaDiplomado> maestriaSource = maestriaDiplomadoService.getMaestrias();
        List<MaestriaDiplomado> maestriaTarget = periodo.getMaestriaDiplomados();
        maestriaSource.removeAll(maestriaTarget);
        
        List<MaestriaDiplomado> diplomadoSource = maestriaDiplomadoService.getDiplomados();
        List<MaestriaDiplomado> diplomadoTarget = periodo.getMaestriaDiplomados();
        diplomadoSource.removeAll(diplomadoTarget);
        
        maestriasSeleccionadas = new DualListModel<MaestriaDiplomado>(maestriaSource, maestriaTarget);
        diplomadosSeleccionados = new DualListModel<MaestriaDiplomado>(diplomadoSource, diplomadoTarget);
    }

    public void cambiarNombreListener() {
        if (disabledPeriodo) {
            disabledPeriodo = false;
        } else {
            disabledPeriodo = true;
        }
    }

    public int getPeriodId() {
        return periodId;
    }

    public void setPeriodId(int periodId) {
        this.periodId = periodId;
    }

    public Periodo getPeriodo() {
        return periodo;
    }

    public void setPeriodo(Periodo periodo) {
        this.periodo = periodo;
    }

    public boolean isDisabledPeriodo() {
        return disabledPeriodo;
    }

    public void setDisabledPeriodo(boolean disabledPeriodo) {
        this.disabledPeriodo = disabledPeriodo;
    }

    public DualListModel<MaestriaDiplomado> getMaestriasSeleccionadas() {
        return maestriasSeleccionadas;
    }

    public void setMaestriasSeleccionadas(DualListModel<MaestriaDiplomado> maestriasSeleccionadas) {
        this.maestriasSeleccionadas = maestriasSeleccionadas;
    }

    public DualListModel<MaestriaDiplomado> getDiplomadosSeleccionados() {
        return diplomadosSeleccionados;
    }

    public void setDiplomadosSeleccionados(DualListModel<MaestriaDiplomado> diplomadosSeleccionados) {
        this.diplomadosSeleccionados = diplomadosSeleccionados;
    }
}
